package com.zpark;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *      Servlet 容器启动时，会为每个 Web 应用（webapps 下的每个目录都是一个 Web 应用）创建一个唯一的
 * ServletContext 对象，该对象一般被称为“Servlet 上下文”。
 *		ServletContext 对象的生命周期从 Servlet 容器启动时开始，到容器关闭或应用被卸载时结束。
 *		Web 应用中的所有 Servlet 共享同一个 ServletContext 对象，不同 Servlet 之间可以通过 ServletContext
 *	对象实现数据通讯，因此 ServletContext 对象也被称为 Context 域对象。域对象是服务器在内存上创建的存储空间，该空
 *	间用于不同动态资源（例如 Servlet、JSP）之间传递与共享数据。
 */
public class ServletContext01 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//1、通过 GenericServlet的getServletContext方法获取ServletContext对象
		ServletContext sc1 = this.getServletContext();

		//2、通过 ServletConfig的 getServletContext方法获取ServletContext对象
		ServletContext sc2 = this.getServletConfig().getServletContext();

		//3、通过 HttpSession的 getServletContext方法获取ServletContext对象
		ServletContext sc3 = req.getSession().getServletContext();

		//4、通过 HttpServletRequest的 getServletContext方法获取ServletContext对象
		ServletContext sc4 = req.getServletContext();

		/*
		* ServletContext对象中提供了获取ServletContext路径的方法，但是该方法返回的是ServletContext的根路径，
		 */
		String contextPath = sc1.getContextPath();
	}
}
